#pragma once

#include "IReferenceCounter.h"
#include "Sol9Types.h"
#include "position2d.h"
#include "color.h"
#include "IImage.h"

namespace sol9
{
namespace graphics
{

	enum ePainterTypes
	{
		EPT_Unknown,
		EPT_Win32,
		EPT_Direct3D9,
	};

	class IPainter : public IReferenceCounter
	{
		__declareBaseClass(IPainter);

	public:
		virtual bool initialize() = 0;

		virtual bool preDraw() = 0;
		virtual bool postDraw() = 0;

		virtual void drawPixel(const core::position2di& Position, const color& cColor = 0xffffffff) = 0;
		virtual void drawLine(const core::position2di& Pos1, const core::position2di& Pos2, const color& cColor = 0xffffffff) = 0;
		virtual void drawImage(const core::position2di& Position, IImage* pImage) = 0;
	};

} // namespace graphics
} // namespace sol9